package com.huawei.su;

import java.util.Objects;

/**
 * https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337?tpId=295&tqId=23267&ru=/exam/oj&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Foj
 */
public class BM4 {
    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(1);
        ListNode listNode2 = new ListNode(2);
        ListNode listNode3 = new ListNode(3);
        listNode1.next = listNode2;
        listNode2.next = listNode3;


        ListNode listNode4 = new ListNode(4);
        ListNode listNode5 = new ListNode(5);
        ListNode listNode6 = new ListNode(6);

        listNode4.next = listNode5;
        listNode5.next = listNode6;
        ListNode merge = merge(listNode1, listNode4);
        System.out.println(merge);
    }


    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * @param pHead1 ListNode类
     * @param pHead2 ListNode类
     * @return ListNode类
     */
    public static ListNode merge(ListNode pHead1, ListNode pHead2) {
        if (Objects.isNull(pHead1)) {
            return pHead2;
        }
        if (Objects.isNull(pHead2)) {
            return pHead1;
        }
        ListNode index1 = pHead1;
        ListNode index2 = pHead2;
        ListNode newHead = new ListNode(-1);
        ListNode index3 = newHead;
        while (true) {
            if (index1 == null && index2 == null) {
                break;
            }
            if (index1 != null && index2 != null) {
                if (index1.val < index2.val) {
                    index3.next = new ListNode(index1.val);
                    index1 = index1.next;
                } else {
                    index3.next = new ListNode(index2.val);
                    index2 = index2.next;
                }
            } else if (index1 == null) {
                index3.next = new ListNode(index2.val);
                index2 = index2.next;
            } else {
                index3.next = new ListNode(index1.val);
                index1 = index1.next;
            }
            index3 = index3.next;
        }
        return newHead.next;
    }
}
